/**
 * 
 */
package cn.itcast.core.service.staticpage;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;

import javax.servlet.ServletContext;

import org.springframework.web.context.ServletContextAware;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import freemarker.template.Configuration;
import freemarker.template.Template;

/**
 * 生成静态页实现类
 * 
 * @author 赵新国
 *
 */
public class StaticPageServiceImpl implements StaticPageService,ServletContextAware{
	
	private Configuration conf;
	
	public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) {
		this.conf = freeMarkerConfigurer.getConfiguration();
	}
	
	//静态化方法
	public void productIndex(Map<String,Object> root, Integer id){
		//String dir = "D:\workspace_shop\babasport12";
		//设置模板的目录
		//conf.setDirectoryForTemplateLoading(dir);
		//输出流  写出去 从内存中写到磁盘上
		Writer out = null;
		try {
			//获取模板  读进来 UTF-8 内存中
			Template template = conf.getTemplate("productDetail.html");
			//获取html的路径
			String path = getPath("/html/product/" + id + ".html");//278.html
			File file = new File(path);
			File parentFile = file.getParentFile();//父文件
			if(!parentFile.exists()){
				parentFile.mkdirs();
			}
			//输出流
			out = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
			//处理模板
			template.process(root, out);
		} catch (Exception e) {
			e.printStackTrace();
		} finally{
			if(out != null){
				try {
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
	
	//获取路径
	public String getPath(String name){
		return servletContext.getRealPath(name);
	}
	
	private ServletContext servletContext;

	public void setServletContext(ServletContext servletContext) {
		// TODO Auto-generated method stub
		this.servletContext = servletContext;
	}
	
}
